How Async Javascript Works